package com.design.mode.singleton;

/**
 * @ClassName LazySingleton
 * @Description    懒汉单例
 *      单例:  指一个类中只有一个实例,且该类能够自信创建这个实例的一种方式
 *      单例模式有 3 个特点：
 *          1.单例类只有一个实例对象；
 *          2.该单例对象必须由单例类自行创建；
 *          3.单例类对外提供一个访问该单例的全局访问点。
 * @Author xiongchao
 * @Date 2020/9/28 11:01
 **/
public class LazySingleton {

    //保证在多线程中 只有一个实例
    private static volatile LazySingleton lazySingleton = null;

    //避免在外部被实例化
    private LazySingleton (){

    }

    /*
       懒汉单例 :   只有在调用的时候  才会去实例化对象
     */
    public static synchronized LazySingleton getInstance(){
        if(lazySingleton == null) {
            System.out.println("第一次初始化对象");
            lazySingleton = new LazySingleton();
        } else {
            System.out.println("已经存在该对象,不需要重新创建");
        }
        return lazySingleton;
    }

    public String getName(){
       return "我是懒汉单例";
    }
}
